In [0]:
# Change directory to VSCode workspace root so that relative path loads work correctly. Turn this addition off with the DataScience.changeDirOnImportExport setting
# ms-python.python added
import os
try:
	os.chdir(os.path.join(os.getcwd(), '..\\DS4A'))
	print(os.getcwd())
except:
	pass

Final Project

In [1]:
# Loading libraries
from IPython import get_ipython
import pydicom
import SimpleITK
import os
import numpy
import matplotlib.pyplot as plt
get_ipython().run_line_magic('pylab', 'inline')

PathDicom = "./DataP/"
lstFilesDCM = []  # create an empty list
for dirName, subdirList, fileList in os.walk(PathDicom):
    for filename in fileList:
        if ".ima" in filename.lower():  # check whether the file is DICOM
            lstFilesDCM.append(os.path.join(dirName, filename))
Populating the interactive namespace from numpy and matplotlib
In [2]:
patient = pydicom.read_file(lstFilesDCM[0])
print(patient.PatientPosition)
print(patient.StudyDate)
print(patient.Modality)

CalcPixelDims = (int(patient.Rows), int(patient.Columns), len(lstFilesDCM))
print(CalcPixelDims)
HFS

MR
(320, 320, 15)
In [3]:
SpineImgArray = numpy.zeros(CalcPixelDims, dtype=patient.pixel_array.dtype)

for filenameDCM in lstFilesDCM:
    ds = pydicom.read_file(filenameDCM)
    SpineImgArray[:, :, lstFilesDCM.index(filenameDCM)] = ds.pixel_array


CalcPixelSpacing = (float(patient.PixelSpacing[0]), float(
    patient.PixelSpacing[1]), float(patient.SliceThickness))

x = numpy.arange(0.0, (CalcPixelDims[0]+1)
                 * CalcPixelSpacing[0], CalcPixelSpacing[0])
y = numpy.arange(0.0, (CalcPixelDims[1]+1)
                 * CalcPixelSpacing[1], CalcPixelSpacing[1])
z = numpy.arange(0.0, (CalcPixelDims[2]+1)
                 * CalcPixelSpacing[2], CalcPixelSpacing[2])
In [4]:
plt.figure(dpi=300)
plt.axes().set_aspect('equal', 'datalim')
plt.set_cmap(plt.gray())
plt.pcolormesh(x, y, numpy.flipud(SpineImgArray[:, :, 12]))
Out[4]:
<matplotlib.collections.QuadMesh at 0x1779502c2b0>
In [1]: